package com.hlkj.pay.infrastructure.model.pay;

import java.util.List;

import org.springframework.util.StringUtils;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.hlkj.framework.common.util.collection.CollectionUtils;
import com.hlkj.framework.common.util.json.JsonUtils;
import com.hlkj.framework.mybatis.core.dataobject.BaseDO;
import com.hlkj.pay.enums.MerchantEnum;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
* 支付通道
* @TableName t_pay_channel
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_pay_channel")
public class PayChannelDO extends BaseDO {
    /**
    * 支付通道编码
    */
    private String code;
    /**
    * 支付通道名称
    */
    private String name;
    /**
    * 图标
    */
    private String imageUrl;
    /**
    * 状态 0 关闭 1 启用
    *  @see com.hlkj.pay.enums.CommonEnum.YES_NO_TYPE
    */
    private Integer status;
    /**
    * 是否支持普通商户 0 不支持 1 支付
    *  @see com.hlkj.pay.enums.CommonEnum.YES_NO_TYPE
    */
    private Integer merchantType;
    /**
    * 是否支持特约商户 0 不支持 1 支付
    *  @see com.hlkj.pay.enums.CommonEnum.YES_NO_TYPE
    */
    private Integer specialMerchantType;
    /**
    * 是否支持进件 0 不支持 1 支付
    *  @see com.hlkj.pay.enums.CommonEnum.YES_NO_TYPE
    */
    private Integer applyType;
    /**
    * 服务商配置
    */
    private String channelConfig;
    /**
    * 普通商户配置
    */
    private String merchantConfig;
    /**
    * 特约商户配置
    */
    private String specialMerchantConfig;
    /**
    * 支付方式集合 关联 t_pay_way 中的code
    */
    private String payCodes;
    /**
    * @see MerchantEnum.DATA_RELATION_TYPE
     * 类型 1 进件 2 汇电通
    */
    private Integer type;
    /**
     * 支付方式集合 关联 t_pay_way 中的code
     */
    @TableField(exist = false)
    private List<String> payWapCodeList;
    public List<String> getPayWapCodeList() {
        if(!CollectionUtils.isEmpty(this.payWapCodeList)){
            return this.payWapCodeList;
        }
        if(StringUtils.hasText(this.payCodes)){
            setPayWapCodeList(JsonUtils.parseArray(this.payCodes,String.class));
        }
        return this.payWapCodeList;
    }
}
